'use strict';

const Controller = require('egg').Controller;

class UserController extends Controller {
    /**
     * 手机号、密码登录
     */
    async login() {
        const { ctx } = this;
        // 解构参数
        const { mobile, password } = ctx.request.body;
        // 判断手机号对应的用户存不存在
        const user = await this.service.user.findByMobile(mobile);
        // 如果用户不存在，提示
        if (!user) {
            ctx.body = {
                code: 404,
                message: '用户不存在',
            };
            return;
        }
        // 如果用户存在，那就校验密码
        if (user.password !== password) {
            ctx.body = {
                code: 404,
                message: '用户密码不匹配',
            };
            return;
        }
        // 获取用户的权限菜单
        const menus = await this.service.user.getMenusById(user.id);
        // 获取用户详细信息
        const profile = await this.service.user.getUserDetail(user.id);
        // 生成 token
        const token = ctx.helper.genToken({ ...user });
        // 返回响应
        ctx.body = {
            code: 200,
            data: {
                token,
                profile,
                menus,
            },
            message: '登录成功',
        };
    }
}

module.exports = UserController;
